import java.util.InputMismatchException;
import java.util.Scanner;

public class TestFinally {
    /** 2.3 finally
     */
    // eg5 ：实现getData方法，内部输入一个整形数字，然后将该数字返回，并在main方法中打印
    public static int getData(){
        Scanner scanner = null;
        try {
            scanner = new Scanner(System.in);
            int data = scanner.nextInt();
            return data; //成功接收输入后程序就返回了
        }catch (InputMismatchException e){
            e.printStackTrace();
        }finally {
            System.out.println("finally中代码");
        }
        //此处之后之后的代码根本没有执行，即输入流就没有被释放，造成资源泄露
        System.out.println("try-catch-finally之后的代码");
        if(null!=scanner){
            scanner.close();
        }
        return 0;
    }

    public static void main(String[] args) {
        int data = getData();
        System.out.println(data);
    }

    public static void main1(String[] args) {
        try {
            int[] arr = {1,2,3};
            arr[100] = 100;
            arr[0] = 0;
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println(e);
        }finally {
            System.out.println("finally中的代码一定会执行");
        }
        System.out.println("如果没有抛出异常，或者异常被处理了，try-catch后的代码也会执行");
    }
}
